Skip to content

Conversation

markushi
Copy link
Member

@markushi markushi commented Oct 2, 2025

📜 Description

Adds an experimental option to enable an alternate way to capture screenshots, using a fake Canvas which draws rectangles instead of text, producing a safer way to mask all sensitive content.

💡 Motivation and Context

No masking issues.

💚 How did you test it?

Manually

📝 Checklist

  • I added GH Issue ID & Linear ID
  • I added tests to verify the changes.
  • No new PII added or SDK only sends newly added PII if sendDefaultPII is enabled.
  • I updated the docs if needed.
  • I updated the wizard if needed.
  • Review from the native team if needed.
  • No breaking change or entry added to the changelog.
  • No breaking change for hybrid SDKs or communicated to hybrid SDKs.

🔮 Next steps

Copy link
Contributor

github-actions bot commented Oct 2, 2025

Performance metrics 🚀

  Plain With Sentry Diff
Startup time 370.45 ms 429.70 ms 59.25 ms
Size 1.58 MiB 2.12 MiB 547.71 KiB

Baseline results on branch: main

Startup times

Revision Plain With Sentry Diff
3d205d0 352.15 ms 432.53 ms 80.38 ms
bdbe1f4 380.66 ms 464.44 ms 83.78 ms
9fbb112 359.71 ms 421.85 ms 62.14 ms
ee747ae 386.94 ms 431.43 ms 44.49 ms
3998a95 415.94 ms 478.54 ms 62.60 ms
14ff5ee 419.75 ms 495.73 ms 75.98 ms
ee747ae 554.98 ms 611.50 ms 56.52 ms
b750b96 408.98 ms 480.32 ms 71.34 ms
c8125f3 397.65 ms 485.14 ms 87.49 ms
b750b96 421.25 ms 444.09 ms 22.84 ms

App size

Revision Plain With Sentry Diff
3d205d0 1.58 MiB 2.10 MiB 532.97 KiB
bdbe1f4 1.58 MiB 2.11 MiB 538.88 KiB
9fbb112 1.58 MiB 2.11 MiB 539.18 KiB
ee747ae 1.58 MiB 2.10 MiB 530.95 KiB
3998a95 1.58 MiB 2.10 MiB 532.96 KiB
14ff5ee 1.58 MiB 2.10 MiB 535.08 KiB
ee747ae 1.58 MiB 2.10 MiB 530.95 KiB
b750b96 1.58 MiB 2.10 MiB 533.19 KiB
c8125f3 1.58 MiB 2.10 MiB 532.32 KiB
b750b96 1.58 MiB 2.10 MiB 533.20 KiB

Previous results on branch: markushi/canvas-approach

Startup times

Revision Plain With Sentry Diff
04bebea 403.28 ms 417.84 ms 14.56 ms
1b16487 375.34 ms 440.81 ms 65.47 ms
8b7fc28 390.50 ms 444.36 ms 53.86 ms
1b42121 377.29 ms 423.63 ms 46.34 ms
0a0b1e3 353.33 ms 370.31 ms 16.98 ms
8b9eb06 389.33 ms 448.42 ms 59.09 ms

App size

Revision Plain With Sentry Diff
04bebea 1.58 MiB 2.12 MiB 547.06 KiB
1b16487 1.58 MiB 2.12 MiB 547.06 KiB
8b7fc28 1.58 MiB 2.11 MiB 543.01 KiB
1b42121 1.58 MiB 2.12 MiB 547.01 KiB
0a0b1e3 1.58 MiB 2.11 MiB 542.83 KiB
8b9eb06 1.58 MiB 2.12 MiB 547.07 KiB

@markushi markushi marked this pull request as ready for review October 13, 2025 09:05
cursor[bot]

This comment was marked as outdated.

Copy link
Contributor

Messages
📖 Do not forget to update Sentry-docs with your feature once the pull request gets approved.

Generated by 🚫 dangerJS against b4acc8f

val canvas = surface.lockHardwareCanvas()
canvas.drawColor(Color.BLACK, PorterDuff.Mode.CLEAR)
holder.picture.draw(canvas)
surface.unlockCanvasAndPost(canvas)
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: Canvas Locking Issue in Picture Render Task

The pictureRenderTask in CanvasStrategy has a potential resource leak. If an exception occurs after surface.lockHardwareCanvas(), the canvas may remain locked because surface.unlockCanvasAndPost() is not guaranteed to execute.

Fix in Cursor Fix in Web

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants